package com.fenxiangtech.mall.dao;

import com.fenxiangtech.mall.entity.Product;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author zhangjiashun
 */
@Mapper
@Repository
public interface ProductDao {

    /**
     * 根据themeId获取Product列表
     * @param themeID
     * @return
     */
    List<Product> listSimpleProductByThemeID(Long themeID);

    /**
     * 获取最近添加的Product列表
     * @param count
     * @return
     */
    List<Product> listRecentProduct(Integer count);

    /**
     * 根据categoryID获取Product列表
     * @param categoryID
     * @return
     */
    List<Product> listProductByCategoryID(Long categoryID);

    /**
     * 根据id获取Product
     * @param id
     * @return
     */
    Product getProductByID(Long id);

    /**
     * 批量获取Product
     * @param ids
     * @return
     */
    List<Product> listProductByIDs(List<Long> ids);

    /**
     * 根据id获取库存
     * @param id
     * @return
     */
    Integer getStock(Long id);

    /**
     * 更新库存
     * @param id
     * @param stock
     * @return
     */
    int updateStock(@Param("id") Long id, @Param("stock") Integer stock);

    /**
     * 分页获取商品列表
     * @param index
     * @param count
     * @return
     */
    List<Product> listProduct(@Param("index") Integer index, @Param("count") Integer count);

    /**
     * 获取商品总数
     * @return
     */
    Integer countProduct();

    /**
     * 更新商品信息,
     * 本方法不提供 create_time, img_id 的更新
     * @param product
     * @return
     */
    Integer updateProduct(Product product);
}
